/*
 * 描          述:  <描述>
 * 修  改   人:  PengQingyang
 * 修改时间:  2012-11-5
 * <修改描述:>
 */
package com.tx.core.paged.model;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnore;

/**
 * 分页对象<br/>
 *    由于之前项目中一直在延用，新版本不进行调整<br/>
 *    由于pagedlist在实现中需要兼容历史版本list字段在历史版本中有所使用
 *    同时向页面返回list,records对传输有所消耗
 *    如果在新开项目中，建议通过Databinder将该实现的返回json通过定义屏蔽掉list的字段
 * @author PengQingyang
 * @version [版本号, 2012-11-5]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
@JsonAutoDetect
public interface PagedList<T> extends IPage<T> {
    
    /**
     * 返回记录总数<br/>
     *    为保证兼容性，count返回值为int类型
     *    如果总数超过int最大值，可直接使用IPage中的total
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return int [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default int getCount() {
        return (int) getTotal();
    }
    
    /**
     * 设置总值
     * <功能详细描述>
     * @param count [参数说明]
     * 
     * @return void [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default void setCount(int count) {
        setTotal(count);
    }
    
    /**
     * 返回总页数<br/>
     *    为保证兼容性，pageSize返回值为int类型
     *    如果总数超过int最大值，可直接使用IPage中的size
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return int [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default int getPageSize() {
        return (int) getSize();
    }
    
    /**
     * 设置每页显示条数<br/>
     * <功能详细描述>
     * @param count [参数说明]
     * 
     * @return void [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default void setPageSize(int pageSize) {
        setSize(pageSize);
    }
    
    /**
     * 返回当前页数<br/>
     *    为保证兼容性，pageIndex返回值为int类型
     *    如果总数超过int最大值，可直接使用IPage中的current
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return int [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default int getPageIndex() {
        return (int) getCurrent();
    }
    
    /**
     * 设置每页显示条数<br/>
     * <功能详细描述>
     * @param count [参数说明]
     * 
     * @return void [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default void setPageIndex(int pageIndex) {
        setCurrent(pageIndex);
    }
    
    /**
     * 返回总页数<br/>
     *    为保证兼容性，pageSize返回值为int类型
     *    如果总数超过int最大值，可直接使用IPage中的pages
     * @return [参数说明]
     * 
     * @return int [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default int getPageCount() {
        return (int) getPages();
    }
    
    /**
     * 返回需要呈现的分页列表<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return List<T> [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    @JsonIgnore
    default List<T> getList() {
        return getRecords();
    }
    
    /**
     * 设置记录列表<br/>
     * <功能详细描述>
     * @param list [参数说明]
     * 
     * @return void [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    default void setList(List<T> list) {
        setRecords(list);
    }
    
}
